其他
Perl学习05之正则表达式
"pythonic生物人"的第10篇分享
摘要
Perl中正则表达式基础使用。
目录
2、正则表达式使用之匹配
3、正则表达式使用之替换
4、参考资料
正文开始啦
1、正则表达式基础知识
元字符(Metacharacters)
字符集
[a-z] 匹配26个小写字母
[A-Z] 匹配26个大写字母
[a-zA-Z] 匹配大小写字母
[0-9] 匹配数字
[0-9a-zA-Z] 匹配数字字母
反斜线字符
\s:匹配任意空白符,即 [\f\t\n\r ]
\S:匹配非空白字符
\d:匹配数字,等价于[0-9]
\D:匹配非数字,等价于[^0-9]
单词相关字符
单词包含数字、字母和下划线,即[_0-9a-zA-Z]。
\b:匹配单词边界处的空字符
\B:匹配非单词边界处的空字符
\<:匹配单词开头处的空字符
\>:匹配单词结尾处的空字符
\w:匹配单词构成部分
\W:匹配非单词构成部分
锚定
^:锚定匹配行首位置
$:锚定匹配行末尾位置
^$:空行
分组捕获和反向引用
例如,
$_ = "yabba dabba doo";
if (/y(#第一组\1
(#第二组\2
.)(#第三组\3
.)\3\2) d\1/) {
print "It matched!\n";
}
#!/usr/bin/perl
"abc11ddabc11" =~ /([a-z]*)([0-9]*)dd\1\2/;
print "$1\t$2\n";
perl re1.pl
abc 11
特殊符号存储匹配内容
$`:匹配内容前面的所有字符
$&:匹配内容;
$':匹配内容后面所有字符;
例如, match.pl
#!/usr/bin/perl
use strict;
use warnings;
my $string="Keeping having a Child heart!";
if($string =~ m/ch/gi){
print "$`\n";
print "$&\n";
print "$'\n";
}
perl match.pl
Keeping having a
Ch
ild heart!
2、正则表达式使用之匹配
匹配操作符
匹配修饰符
3、正则表达式使用之替换
语法:s/<pattern>/<replacement>/;
例如,replace.pl
#!/usr/bin/perl
use strict;
use warnings;
my $string="She likes me!";
$string=~s/likes/liked/g;
print "$string\n";
$string=~s/e/E/;
print "$string\n";
$string=~s/e/E/g;#加修饰符g全局替换
print "$string\n";
perl replace.pl
She liked me!
ShE liked me!
4、参考资料
https://stackoverflow.com/questions/22937618/reference-what-does-this-regex-mean/22944075#22944075
https://www.cnblogs.com/f-ck-need-u/p/9648439.html